// import {
//     baseURL
// } from './base.js';
import {getToken} from "@/common/auth"; //导入接口的前缀地址
const baseURL = '/api';

// 辅助函数：将 options 对象中的 URL 和 params 转换成带参数的完整 URL
function buildUrlWithOptions(options) {
    const baseUrl = baseURL + options.url; // 基础 URL
    const params = options.params || {}; // 参数对象

    // 构建 URL 查询参数字符串
    const queryParams = Object.keys(params)
        .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
        .join('&');

    // 如果有查询参数，需要将其拼接到 URL 后面
    const fullUrl = queryParams ? `${baseUrl}?${queryParams}` : baseUrl;

    return fullUrl;
}


export const request = (options) => {

    let fullUrl = buildUrlWithOptions(options);
    // fullUrl="/api/user/login?username=admin&password=123456"

    return new Promise((resolve, reject) => {
        uni.request({
            url: fullUrl, //接口地址：前缀+方法中传入的地址
            method: options.method || 'GET', //请求方法：传入的方法或者默认是“GET”
            data: options.data || {}, //传递参数：传入的参数或者默认传递空集合
            params: options.params,
            header: {
                Authorization: getToken() //自定义请求头信息
            },
            success: (res) => {
                //返回的数据（不固定，看后端接口，这里是做了一个判断，如果不为true，用uni.showToast方法提示获取数据失败)

                if (res.statusCode === 401) {
                    uni.redirectTo({
                        url: '/pages/login/login'
                    });
                    return uni.showToast({
                        title: '您未登录',
                        icon: 'none'
                    })
                }
                // 如果不满足上述判断就输出数据

               else if (res.statusCode !== 200) {
                    return uni.showToast({
                        title: '网络连接错误',
                        icon: 'none'
                    })
                }

                resolve(res.data)
            },
            // 这里的接口请求，如果出现问题就输出接口请求失败
            fail: (err) => {
                console.log(err)
                reject(err)
            }
        })
    })
}